<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Flow-IPC: ipc::session::sync_io::Session_server_adapter&lt; Session_server &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Flow-IPC<span id="projectnumber">&#160;2.0.0</span>
   </div>
   <div id="projectbrief">Flow-IPC project: Full implementation reference.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceipc.html">ipc</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session.html">session</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session_1_1sync__io.html">sync_io</a></li><li class="navelem"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">Session_server_adapter</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#related">Related Functions</a> &#124;
<a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">ipc::session::sync_io::Session_server_adapter&lt; Session_server &gt; Class Template Reference</div></div>
</div><!--header-->
<div class="contents">

<p><code><a class="el" href="namespaceipc_1_1session_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::session.">sync_io</a></code>-pattern counterpart to async-I/O-pattern <a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">session::Session_server</a> types and all their SHM-aware variations (at least <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__server.html" title="This is to vanilla Session_server what shm::classic::Server_session is to vanilla Server_session: it ...">shm::classic::Session_server</a> and <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">shm::arena_lend::jemalloc::Session_server</a>).  
 <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for ipc::session::sync_io::Session_server_adapter&lt; Session_server &gt;:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1sync__io_1_1Session__server__adapter__coll__graph.svg" width="1635" height="719"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:aedc3ce49c5b2677fbd872291d8c5ec68"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68">Session_server_obj</a> = <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a></td></tr>
<tr class="memdesc:aedc3ce49c5b2677fbd872291d8c5ec68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand, for generic programming et al, for template parameter <code><a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">Session_server</a></code>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68">More...</a><br /></td></tr>
<tr class="separator:aedc3ce49c5b2677fbd872291d8c5ec68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc2a26266df7087fb2469cdb0fa40321"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#afc2a26266df7087fb2469cdb0fa40321">Session_obj</a> = <a class="el" href="classipc_1_1session_1_1sync__io_1_1Server__session__adapter.html">Server_session_adapter</a>&lt; typename <a class="el" href="classipc_1_1session_1_1Session__server.html#a4140ba69205b68aec322ad834f4c8d59">Session_server_obj::Server_session_obj</a> &gt;</td></tr>
<tr class="memdesc:afc2a26266df7087fb2469cdb0fa40321"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for object type targeted by <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#afc2a26266df7087fb2469cdb0fa40321">More...</a><br /></td></tr>
<tr class="separator:afc2a26266df7087fb2469cdb0fa40321"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29aaeacaf20c4c6c707584482ae52ce6"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a29aaeacaf20c4c6c707584482ae52ce6">Async_io_obj</a> = <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68">Session_server_obj</a></td></tr>
<tr class="memdesc:a29aaeacaf20c4c6c707584482ae52ce6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Useful for generic programming, the async-I/O-pattern counterpart to <code>*this</code> type.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a29aaeacaf20c4c6c707584482ae52ce6">More...</a><br /></td></tr>
<tr class="separator:a29aaeacaf20c4c6c707584482ae52ce6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5ed3f9b1428fbf9edae1f6e3f35de1f"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#af5ed3f9b1428fbf9edae1f6e3f35de1f">Sync_io_obj</a> = <a class="el" href="classipc_1_1transport_1_1Null__peer.html">transport::Null_peer</a></td></tr>
<tr class="memdesc:af5ed3f9b1428fbf9edae1f6e3f35de1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">You may disregard.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#af5ed3f9b1428fbf9edae1f6e3f35de1f">More...</a><br /></td></tr>
<tr class="separator:af5ed3f9b1428fbf9edae1f6e3f35de1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a12a249300b19d23dce13e1a79870f50a"><td class="memTemplParams" colspan="2">template&lt;typename... Ctor_args&gt; </td></tr>
<tr class="memitem:a12a249300b19d23dce13e1a79870f50a"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a12a249300b19d23dce13e1a79870f50a">Session_server_adapter</a> (Ctor_args &amp;&amp;... ctor_args)</td></tr>
<tr class="memdesc:a12a249300b19d23dce13e1a79870f50a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forwards to the <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68" title="Short-hand, for generic programming et al, for template parameter Session_server.">Session_server_obj</a> ctor.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a12a249300b19d23dce13e1a79870f50a">More...</a><br /></td></tr>
<tr class="separator:a12a249300b19d23dce13e1a79870f50a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a963a189ce8663fd8a4d14857285b2420"><td class="memTemplParams" colspan="2">template&lt;typename Event_wait_func_t &gt; </td></tr>
<tr class="memitem:a963a189ce8663fd8a4d14857285b2420"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a963a189ce8663fd8a4d14857285b2420">start_ops</a> (Event_wait_func_t &amp;&amp;ev_wait_func)</td></tr>
<tr class="memdesc:a963a189ce8663fd8a4d14857285b2420"><td class="mdescLeft">&#160;</td><td class="mdescRight">All notes from <a class="el" href="classipc_1_1session_1_1sync__io_1_1Client__session__adapter.html#a9fc6bf366303936bb3bfedb92def1728" title="Sets up the sync_io-pattern interaction between *this and the user&#39;s event loop; required before *thi...">Client_session_adapter::start_ops()</a> apply equally.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a963a189ce8663fd8a4d14857285b2420">More...</a><br /></td></tr>
<tr class="separator:a963a189ce8663fd8a4d14857285b2420"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6b60f65f4f3bd1eed258872aeb432f9"><td class="memTemplParams" colspan="2">template&lt;typename Create_ev_wait_hndl_func &gt; </td></tr>
<tr class="memitem:ac6b60f65f4f3bd1eed258872aeb432f9"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#ac6b60f65f4f3bd1eed258872aeb432f9">replace_event_wait_handles</a> (const Create_ev_wait_hndl_func &amp;create_ev_wait_hndl_func)</td></tr>
<tr class="memdesc:ac6b60f65f4f3bd1eed258872aeb432f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">All notes from <a class="el" href="classipc_1_1session_1_1sync__io_1_1Client__session__adapter.html#aca3754403c449214d9a1598a613278a9" title="Analogous to transport::sync_io::Native_handle_sender::replace_event_wait_handles().">Client_session_adapter::replace_event_wait_handles()</a> apply equally.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#ac6b60f65f4f3bd1eed258872aeb432f9">More...</a><br /></td></tr>
<tr class="separator:ac6b60f65f4f3bd1eed258872aeb432f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2abb42ee66fa0006c675975bf4bed380"><td class="memTemplParams" colspan="2">template&lt;typename Task_err &gt; </td></tr>
<tr class="memitem:a2abb42ee66fa0006c675975bf4bed380"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380">async_accept</a> (<a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#afc2a26266df7087fb2469cdb0fa40321">Session_obj</a> *target_session, Task_err &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:a2abb42ee66fa0006c675975bf4bed380"><td class="mdescLeft">&#160;</td><td class="mdescRight">Acts identically to 1-arg overload of <a class="el" href="classipc_1_1session_1_1Session__server.html#a13887cd64912bb5f5675e2817ff8435f" title="Asynchronously awaits for an opposing Client_session to request session establishment and calls on_do...">Session_server::async_accept()</a>, except that the completion handler is invoked in the <code><a class="el" href="namespaceipc_1_1session_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::session.">sync_io</a></code>-pattern fashion, synchronously inside an async-wait performed by you and reported via <code>(*on_active_ev_func)()</code>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380">More...</a><br /></td></tr>
<tr class="separator:a2abb42ee66fa0006c675975bf4bed380"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1830cd789837b55cd8325cd15ffbbb1"><td class="memTemplParams" colspan="2">template&lt;typename Task_err , typename N_init_channels_by_srv_req_func , typename Mdt_load_func &gt; </td></tr>
<tr class="memitem:af1830cd789837b55cd8325cd15ffbbb1"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#af1830cd789837b55cd8325cd15ffbbb1">async_accept</a> (<a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#afc2a26266df7087fb2469cdb0fa40321">Session_obj</a> *target_session, typename <a class="el" href="classipc_1_1session_1_1Session__server.html#a6dea741c32a771532a884ffbc0826bb3">Session_server_obj::Channels</a> *init_channels_by_srv_req, typename <a class="el" href="classipc_1_1session_1_1Session__server.html#aa19b9057ac2d873b5989b6213a9e6f82">Session_server_obj::Mdt_reader_ptr</a> *mdt_from_cli_or_null, typename <a class="el" href="classipc_1_1session_1_1Session__server.html#a6dea741c32a771532a884ffbc0826bb3">Session_server_obj::Channels</a> *init_channels_by_cli_req, N_init_channels_by_srv_req_func &amp;&amp;n_init_channels_by_srv_req_func, Mdt_load_func &amp;&amp;mdt_load_func, Task_err &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:af1830cd789837b55cd8325cd15ffbbb1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Acts identically to 7-arg overload of <a class="el" href="classipc_1_1session_1_1Session__server.html#a13887cd64912bb5f5675e2817ff8435f" title="Asynchronously awaits for an opposing Client_session to request session establishment and calls on_do...">Session_server::async_accept()</a>, except that the completion handler is invoked in the <code><a class="el" href="namespaceipc_1_1session_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::session.">sync_io</a></code>-pattern fashion, synchronously inside an async-wait performed by you and reported via <code>(*on_active_ev_func)()</code>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#af1830cd789837b55cd8325cd15ffbbb1">More...</a><br /></td></tr>
<tr class="separator:af1830cd789837b55cd8325cd15ffbbb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ead7794ecb7da6d24a33364237dba63"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68">Session_server_obj</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a6ead7794ecb7da6d24a33364237dba63">core</a> ()</td></tr>
<tr class="memdesc:a6ead7794ecb7da6d24a33364237dba63"><td class="mdescLeft">&#160;</td><td class="mdescRight">The adapted mutable <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68" title="Short-hand, for generic programming et al, for template parameter Session_server.">Session_server_obj</a>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a6ead7794ecb7da6d24a33364237dba63">More...</a><br /></td></tr>
<tr class="separator:a6ead7794ecb7da6d24a33364237dba63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ce0abb6a36d2af066aca0a2888fd9a6"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68">Session_server_obj</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a8ce0abb6a36d2af066aca0a2888fd9a6">core</a> () const</td></tr>
<tr class="memdesc:a8ce0abb6a36d2af066aca0a2888fd9a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">The adapted immutable <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68" title="Short-hand, for generic programming et al, for template parameter Session_server.">Session_server_obj</a>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a8ce0abb6a36d2af066aca0a2888fd9a6">More...</a><br /></td></tr>
<tr class="separator:a8ce0abb6a36d2af066aca0a2888fd9a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba09db41feabbe5e2a464d3ff98261cb"><td class="memItemLeft" align="right" valign="top">flow::log::Logger *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aba09db41feabbe5e2a464d3ff98261cb">get_logger</a> () const</td></tr>
<tr class="memdesc:aba09db41feabbe5e2a464d3ff98261cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">See <code>flow::log::Log_context</code>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aba09db41feabbe5e2a464d3ff98261cb">More...</a><br /></td></tr>
<tr class="separator:aba09db41feabbe5e2a464d3ff98261cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d69a3b64da0a2b9ddb61c5bf6fa732c"><td class="memItemLeft" align="right" valign="top">const flow::log::Component &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a7d69a3b64da0a2b9ddb61c5bf6fa732c">get_log_component</a> () const</td></tr>
<tr class="memdesc:a7d69a3b64da0a2b9ddb61c5bf6fa732c"><td class="mdescLeft">&#160;</td><td class="mdescRight">See <code>flow::log::Log_context</code>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a7d69a3b64da0a2b9ddb61c5bf6fa732c">More...</a><br /></td></tr>
<tr class="separator:a7d69a3b64da0a2b9ddb61c5bf6fa732c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a9bdfe592c152cf050994dc95f59f8337"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a9bdfe592c152cf050994dc95f59f8337">accept_write</a> (const <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> &amp;err_code)</td></tr>
<tr class="memdesc:a9bdfe592c152cf050994dc95f59f8337"><td class="mdescLeft">&#160;</td><td class="mdescRight">The real handler given for <code>on_done_func</code> to <code><a class="el" href="classipc_1_1session_1_1Session__server.html#a13887cd64912bb5f5675e2817ff8435f" title="Asynchronously awaits for an opposing Client_session to request session establishment and calls on_do...">Session_server_obj::async_accept()</a></code>: it records the result of that async-accept to <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a57e1e2ca43f06bd1aa9658c855b1666b" title="Result given to (or about to be given to) m_on_done_func_or_empty.">m_target_err_code</a>, then signals <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a1fb20ad7f02e87bf93bff1a64e4b23fb" title="Signaled by accept_write(), it returns the IPC-pipe to steady-state (empty, not readable),...">accept_read()</a> via the IPC-pipe.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a9bdfe592c152cf050994dc95f59f8337">More...</a><br /></td></tr>
<tr class="separator:a9bdfe592c152cf050994dc95f59f8337"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1fb20ad7f02e87bf93bff1a64e4b23fb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a1fb20ad7f02e87bf93bff1a64e4b23fb">accept_read</a> ()</td></tr>
<tr class="memdesc:a1fb20ad7f02e87bf93bff1a64e4b23fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signaled by <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a9bdfe592c152cf050994dc95f59f8337" title="The real handler given for on_done_func to Session_server_obj::async_accept(): it records the result ...">accept_write()</a>, it returns the IPC-pipe to steady-state (empty, not readable), then invokes the original user <code>on_done_func()</code>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a1fb20ad7f02e87bf93bff1a64e4b23fb">More...</a><br /></td></tr>
<tr class="separator:a1fb20ad7f02e87bf93bff1a64e4b23fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a609bbd2c3ac35737d48c644f4b85e294"><td class="memItemLeft" align="right" valign="top">flow::util::Task_engine&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a609bbd2c3ac35737d48c644f4b85e294">m_nb_task_engine</a></td></tr>
<tr class="memdesc:a609bbd2c3ac35737d48c644f4b85e294"><td class="mdescLeft">&#160;</td><td class="mdescRight">Similar to the one in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__adapter.html" title="Internal-use workhorse containing common elements of Client_session_adapter and Server_session_adapte...">Session_adapter</a>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a609bbd2c3ac35737d48c644f4b85e294">More...</a><br /></td></tr>
<tr class="separator:a609bbd2c3ac35737d48c644f4b85e294"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7166adae8af99857bb966829fcc0ba99"><td class="memItemLeft" align="right" valign="top">flow::util::Task_engine&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a7166adae8af99857bb966829fcc0ba99">m_ev_hndl_task_engine_unused</a></td></tr>
<tr class="memdesc:a7166adae8af99857bb966829fcc0ba99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Similar to the one in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__adapter.html" title="Internal-use workhorse containing common elements of Client_session_adapter and Server_session_adapte...">Session_adapter</a>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a7166adae8af99857bb966829fcc0ba99">More...</a><br /></td></tr>
<tr class="separator:a7166adae8af99857bb966829fcc0ba99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a439be095b518a57efbbca079d6b05f59"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc_1_1util.html#aaf368acf8243bb25de3eef4e836c15de">util::Pipe_reader</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a439be095b518a57efbbca079d6b05f59">m_ready_reader</a></td></tr>
<tr class="memdesc:a439be095b518a57efbbca079d6b05f59"><td class="mdescLeft">&#160;</td><td class="mdescRight">Similar to the one in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__adapter.html" title="Internal-use workhorse containing common elements of Client_session_adapter and Server_session_adapte...">Session_adapter</a>, applied to <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a439be095b518a57efbbca079d6b05f59">More...</a><br /></td></tr>
<tr class="separator:a439be095b518a57efbbca079d6b05f59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19f346f8827932b4cfcfe525a7d039a0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc_1_1util.html#a844d5ca9c17b672644fc8d9dbe758db0">util::Pipe_writer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a19f346f8827932b4cfcfe525a7d039a0">m_ready_writer</a></td></tr>
<tr class="memdesc:a19f346f8827932b4cfcfe525a7d039a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Similar to the one in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__adapter.html" title="Internal-use workhorse containing common elements of Client_session_adapter and Server_session_adapte...">Session_adapter</a>, applied to <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a19f346f8827932b4cfcfe525a7d039a0">More...</a><br /></td></tr>
<tr class="separator:a19f346f8827932b4cfcfe525a7d039a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a303eace5e24c56d8c17e9b0f79f4446b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1util_1_1sync__io_1_1Asio__waitable__native__handle.html">util::sync_io::Asio_waitable_native_handle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a303eace5e24c56d8c17e9b0f79f4446b">m_ev_wait_hndl</a></td></tr>
<tr class="memdesc:a303eace5e24c56d8c17e9b0f79f4446b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Similar to the one in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__adapter.html" title="Internal-use workhorse containing common elements of Client_session_adapter and Server_session_adapte...">Session_adapter</a>, applied to <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a303eace5e24c56d8c17e9b0f79f4446b">More...</a><br /></td></tr>
<tr class="separator:a303eace5e24c56d8c17e9b0f79f4446b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0190d535983fbf6abf8d82a915771e89"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24">util::sync_io::Event_wait_func</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a0190d535983fbf6abf8d82a915771e89">m_ev_wait_func</a></td></tr>
<tr class="memdesc:a0190d535983fbf6abf8d82a915771e89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Similar to the one in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__adapter.html" title="Internal-use workhorse containing common elements of Client_session_adapter and Server_session_adapte...">Session_adapter</a>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a0190d535983fbf6abf8d82a915771e89">More...</a><br /></td></tr>
<tr class="separator:a0190d535983fbf6abf8d82a915771e89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3bd7b5cf743f93aa7a63b2c0f599c33"><td class="memItemLeft" align="right" valign="top">flow::async::Task_asio_err&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#ab3bd7b5cf743f93aa7a63b2c0f599c33">m_on_done_func_or_empty</a></td></tr>
<tr class="memdesc:ab3bd7b5cf743f93aa7a63b2c0f599c33"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code>on_done_func</code> from <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a> if one is pending; otherwise <code>.empty()</code>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#ab3bd7b5cf743f93aa7a63b2c0f599c33">More...</a><br /></td></tr>
<tr class="separator:ab3bd7b5cf743f93aa7a63b2c0f599c33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57e1e2ca43f06bd1aa9658c855b1666b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a57e1e2ca43f06bd1aa9658c855b1666b">m_target_err_code</a></td></tr>
<tr class="memdesc:a57e1e2ca43f06bd1aa9658c855b1666b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Result given to (or about to be given to) <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#ab3bd7b5cf743f93aa7a63b2c0f599c33" title="on_done_func from async_accept() if one is pending; otherwise .empty().">m_on_done_func_or_empty</a>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a57e1e2ca43f06bd1aa9658c855b1666b">More...</a><br /></td></tr>
<tr class="separator:a57e1e2ca43f06bd1aa9658c855b1666b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab58ecf6547887fcbfbc7b46f1ed9ea08"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a29aaeacaf20c4c6c707584482ae52ce6">Async_io_obj</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#ab58ecf6547887fcbfbc7b46f1ed9ea08">m_async_io</a></td></tr>
<tr class="memdesc:ab58ecf6547887fcbfbc7b46f1ed9ea08"><td class="mdescLeft">&#160;</td><td class="mdescRight">This guy does all the work. In our dtor this will be destroyed (hence thread stopped) first-thing.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#ab58ecf6547887fcbfbc7b46f1ed9ea08">More...</a><br /></td></tr>
<tr class="separator:ab58ecf6547887fcbfbc7b46f1ed9ea08"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="related" name="related"></a>
Related Functions</h2></td></tr>
<tr><td class="ititle" colspan="2"><p >(Note that these are not member functions.) </p>
</td></tr>
<tr class="memitem:ae4cfae5481ba5b569b3c4c9af3ed1710"><td class="memTemplParams" colspan="2">template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </td></tr>
<tr class="memitem:ae4cfae5481ba5b569b3c4c9af3ed1710"><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#ae4cfae5481ba5b569b3c4c9af3ed1710">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; &amp;val)</td></tr>
<tr class="memdesc:ae4cfae5481ba5b569b3c4c9af3ed1710"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html" title="sync_io-pattern counterpart to async-I/O-pattern session::Session_server types and all their SHM-awar...">Session_server_adapter</a></code> to the given <code>ostream</code>.  <a href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#ae4cfae5481ba5b569b3c4c9af3ed1710">More...</a><br /></td></tr>
<tr class="separator:ae4cfae5481ba5b569b3c4c9af3ed1710"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a>&gt;<br />
class ipc::session::sync_io::Session_server_adapter&lt; Session_server &gt;</div><p ><code><a class="el" href="namespaceipc_1_1session_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::session.">sync_io</a></code>-pattern counterpart to async-I/O-pattern <a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">session::Session_server</a> types and all their SHM-aware variations (at least <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__server.html" title="This is to vanilla Session_server what shm::classic::Server_session is to vanilla Server_session: it ...">shm::classic::Session_server</a> and <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">shm::arena_lend::jemalloc::Session_server</a>). </p>
<p >In point of fact:</p><ul>
<li>Use this if and only if you desire a <code><a class="el" href="namespaceipc_1_1session_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::session.">sync_io</a></code>-pattern style of being informed of async events from a <code><a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">Session_server</a></code> <em>and</em> <code>Server_session</code> of any kind. For example, you may find this convenient if your event loop is an old-school reactor using <code>poll()</code> or <code>epoll_wait()</code>. This affects exactly the following APIs:<ul>
<li><code><a class="el" href="classipc_1_1session_1_1Session__server.html#a13887cd64912bb5f5675e2817ff8435f" title="Asynchronously awaits for an opposing Client_session to request session establishment and calls on_do...">Session_server::async_accept()</a></code>,</li>
</ul>
</li>
<li>This <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html" title="sync_io-pattern counterpart to async-I/O-pattern session::Session_server types and all their SHM-awar...">Session_server_adapter</a> <em>adapts</em> a <code><a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">Session_server</a></code> constructed and stored within <code>*this</code>. All APIs excluding the above &ndash; that is to say all non-async APIs &ndash; are to be invoked via <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a6ead7794ecb7da6d24a33364237dba63" title="The adapted mutable Session_server_obj.">core()</a> accessor.<ul>
<li>Trying to use <code><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a6ead7794ecb7da6d24a33364237dba63" title="The adapted mutable Session_server_obj.">core()</a>-&gt;<a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a></code> leads to undefined behavior.</li>
</ul>
</li>
</ul>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespaceipc_1_1util_1_1sync__io.html" title="Contains common code, as well as important explanatory documentation in the following text,...">util::sync_io</a> doc header &ndash; describes the general <code><a class="el" href="namespaceipc_1_1session_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::session.">sync_io</a></code> pattern we are following. </dd>
<dd>
<a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">session::Session_server</a>, <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__server.html" title="This is to vanilla Session_server what shm::classic::Server_session is to vanilla Server_session: it ...">shm::classic::Session_server</a>, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">shm::arena_lend::jemalloc::Session_server</a>.</dd></dl>
<p>As is generally the case when choosing <code>sync_io::X</code> versus <code>X</code>, we recommend using <code>X</code> due to it being easier. In this particular case (see below) there is no perf benefit to using <code>sync_io::X</code>, either, so the only reason to use <code>sync_io::X</code> in this case would be because you've got an old-school reactor event loop with a <code>poll()</code> or <code>epoll_wait()</code>, in which case the <code><a class="el" href="namespaceipc_1_1session_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::session.">sync_io</a></code> API may be easier to integrate.</p>
<p >To use it:</p><ul>
<li>Construct it explicitly. The ctor signature is exactly identical to that of <a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">session::Session_server</a>.</li>
<li>Set up <code><a class="el" href="namespaceipc_1_1session_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::session.">sync_io</a></code> pattern using <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a963a189ce8663fd8a4d14857285b2420" title="All notes from Client_session_adapter::start_ops() apply equally.">start_ops()</a> (and if needed precede it with <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#ac6b60f65f4f3bd1eed258872aeb432f9" title="All notes from Client_session_adapter::replace_event_wait_handles() apply equally.">replace_event_wait_handles()</a>).</li>
<li>Use <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a> in similar fashion to async-I/O <code>Server_session</code> supplying a completion handler (though it will be invoked synchronously per <code><a class="el" href="namespaceipc_1_1session_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::session.">sync_io</a></code> pattern).<ul>
<li>As normal, construct a blank <code>Server_session</code> to pass as the target of <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a>. The type of this object shall be <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#afc2a26266df7087fb2469cdb0fa40321" title="Short-hand for object type targeted by async_accept().">Session_server_adapter::Session_obj</a>; it shall be a concrete type of the class template <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html" title="sync_io-pattern counterpart to async-I/O-pattern session::Session_server types and all their SHM-awar...">Session_server_adapter</a>.</li>
</ul>
</li>
<li>On successful accept:<ul>
<li>See doc header for <a class="el" href="classipc_1_1session_1_1sync__io_1_1Server__session__adapter.html" title="sync_io-pattern counterpart to async-I/O-pattern session::Server_session types and all their SHM-awar...">Server_session_adapter</a> on what to do next. Spoiler alert: <a class="el" href="classipc_1_1session_1_1sync__io_1_1Server__session__adapter.html#a62dfa3df3b66f318536be12b16261968" title="All notes from Client_session_adapter::start_ops() apply equally.">Server_session_adapter::start_ops()</a>, then <a class="el" href="classipc_1_1session_1_1sync__io_1_1Server__session__adapter.html#a592f273a045b84ed361d141ae01e6525" title="Acts identically to all overloads of Server_session_mv::init_handlers(), except that the completion h...">Server_session_adapter::init_handlers()</a> (mirroring a vanilla <code>Server_session</code>).</li>
<li>Use <code><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a6ead7794ecb7da6d24a33364237dba63" title="The adapted mutable Session_server_obj.">core()</a>-&gt;</code> for all other API needs (e.g., <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__server.html#ae3e011716068f4e669bd7eed487cf207" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">shm::classic::Session_server::app_shm()</a>).</li>
</ul>
</li>
</ul>
<h3>Internal implementation</h3>
<p >Normally this would not be in the public docs for this public-use class, but indulge us...</p>
<p >...by reading an equally applicable note in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Client__session__adapter.html" title="sync_io-pattern counterpart to async-I/O-pattern session::Client_session types and all their SHM-awar...">Client_session_adapter</a> doc header.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname"><a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">Session_server</a></td><td>The async-I/O <code><a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">Session_server</a></code> concrete type being adapted. As of this writing that would be one of at least: <code><a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">session::Session_server</a>&lt;knobs&gt;</code>, <code><a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__server.html" title="This is to vanilla Session_server what shm::classic::Server_session is to vanilla Server_session: it ...">session::shm::classic::Session_server</a>&lt;knobs&gt;</code>, <code>session::shm::jemalloc::Session_server&lt;knobs&gt;</code>. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00073">73</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a29aaeacaf20c4c6c707584482ae52ce6" name="a29aaeacaf20c4c6c707584482ae52ce6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a29aaeacaf20c4c6c707584482ae52ce6">&#9670;&nbsp;</a></span>Async_io_obj</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::Async_io_obj =  <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68">Session_server_obj</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Useful for generic programming, the async-I/O-pattern counterpart to <code>*this</code> type. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00085">85</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<a id="afc2a26266df7087fb2469cdb0fa40321" name="afc2a26266df7087fb2469cdb0fa40321"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc2a26266df7087fb2469cdb0fa40321">&#9670;&nbsp;</a></span>Session_obj</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::Session_obj =  <a class="el" href="classipc_1_1session_1_1sync__io_1_1Server__session__adapter.html">Server_session_adapter</a>&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html#a4140ba69205b68aec322ad834f4c8d59">Session_server_obj::Server_session_obj</a>&gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand for object type targeted by <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a>. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00082">82</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<a id="aedc3ce49c5b2677fbd872291d8c5ec68" name="aedc3ce49c5b2677fbd872291d8c5ec68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aedc3ce49c5b2677fbd872291d8c5ec68">&#9670;&nbsp;</a></span>Session_server_obj</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::Session_server_obj =  <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand, for generic programming et al, for template parameter <code><a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">Session_server</a></code>. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00079">79</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<a id="af5ed3f9b1428fbf9edae1f6e3f35de1f" name="af5ed3f9b1428fbf9edae1f6e3f35de1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5ed3f9b1428fbf9edae1f6e3f35de1f">&#9670;&nbsp;</a></span>Sync_io_obj</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::Sync_io_obj =  <a class="el" href="classipc_1_1transport_1_1Null__peer.html">transport::Null_peer</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>You may disregard. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00087">87</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a12a249300b19d23dce13e1a79870f50a" name="a12a249300b19d23dce13e1a79870f50a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12a249300b19d23dce13e1a79870f50a">&#9670;&nbsp;</a></span>Session_server_adapter()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<div class="memtemplate">
template&lt;typename... Ctor_args&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::Session_server_adapter </td>
          <td>(</td>
          <td class="paramtype">Ctor_args &amp;&amp;...&#160;</td>
          <td class="paramname"><em>ctor_args</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Forwards to the <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68" title="Short-hand, for generic programming et al, for template parameter Session_server.">Session_server_obj</a> ctor. </p>
<p >See <a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">Session_server</a> ctor doc headers.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Ctor_args</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctor_args</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00266">266</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

<p class="reference">References <a class="el" href="asio__waitable__native__hndl_8cpp_source.html#l00065">ipc::util::sync_io::Asio_waitable_native_handle::assign()</a>, <a class="el" href="session__server__adapter_8hpp_source.html#l00245">ipc::session::sync_io::Session_server_adapter&lt; Session_server &gt;::m_ev_wait_hndl</a>, <a class="el" href="session__server__adapter_8hpp_source.html#l00239">ipc::session::sync_io::Session_server_adapter&lt; Session_server &gt;::m_ready_reader</a>, and <a class="el" href="session__server__adapter_8hpp_source.html#l00242">ipc::session::sync_io::Session_server_adapter&lt; Session_server &gt;::m_ready_writer</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1sync__io_1_1Session__server__adapter_a12a249300b19d23dce13e1a79870f50a_cgraph.svg" width="560" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a1fb20ad7f02e87bf93bff1a64e4b23fb" name="a1fb20ad7f02e87bf93bff1a64e4b23fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1fb20ad7f02e87bf93bff1a64e4b23fb">&#9670;&nbsp;</a></span>accept_read()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::accept_read</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Signaled by <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a9bdfe592c152cf050994dc95f59f8337" title="The real handler given for on_done_func to Session_server_obj::async_accept(): it records the result ...">accept_write()</a>, it returns the IPC-pipe to steady-state (empty, not readable), then invokes the original user <code>on_done_func()</code>. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00419">419</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

<p class="reference">References <a class="el" href="ipc__core_2src_2ipc_2util_2detail_2util_8cpp_source.html#l00096">ipc::util::pipe_consume()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1sync__io_1_1Session__server__adapter_a1fb20ad7f02e87bf93bff1a64e4b23fb_cgraph.svg" width="355" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a9bdfe592c152cf050994dc95f59f8337" name="a9bdfe592c152cf050994dc95f59f8337"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9bdfe592c152cf050994dc95f59f8337">&#9670;&nbsp;</a></span>accept_write()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::accept_write </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> &amp;&#160;</td>
          <td class="paramname"><em>err_code</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The real handler given for <code>on_done_func</code> to <code><a class="el" href="classipc_1_1session_1_1Session__server.html#a13887cd64912bb5f5675e2817ff8435f" title="Asynchronously awaits for an opposing Client_session to request session establishment and calls on_do...">Session_server_obj::async_accept()</a></code>: it records the result of that async-accept to <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a57e1e2ca43f06bd1aa9658c855b1666b" title="Result given to (or about to be given to) m_on_done_func_or_empty.">m_target_err_code</a>, then signals <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a1fb20ad7f02e87bf93bff1a64e4b23fb" title="Signaled by accept_write(), it returns the IPC-pipe to steady-state (empty, not readable),...">accept_read()</a> via the IPC-pipe. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">err_code</td><td>Result from <code><a class="el" href="classipc_1_1session_1_1Session__server.html#a13887cd64912bb5f5675e2817ff8435f" title="Asynchronously awaits for an opposing Client_session to request session establishment and calls on_do...">Session_server_obj::async_accept()</a></code>. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00402">402</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

<p class="reference">References <a class="el" href="ipc__core_2src_2ipc_2util_2detail_2util_8cpp_source.html#l00067">ipc::util::pipe_produce()</a>, and <a class="el" href="namespaceipc_1_1session_1_1error.html#a0708d4bec9ae853f4d7e3d7822fc8f2fafe29343445a7bf167cc186a44bd2c6ed">ipc::session::error::S_OBJECT_SHUTDOWN_ABORTED_COMPLETION_HANDLER</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1sync__io_1_1Session__server__adapter_a9bdfe592c152cf050994dc95f59f8337_cgraph.svg" width="351" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a2abb42ee66fa0006c675975bf4bed380" name="a2abb42ee66fa0006c675975bf4bed380"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2abb42ee66fa0006c675975bf4bed380">&#9670;&nbsp;</a></span>async_accept() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<div class="memtemplate">
template&lt;typename Task_err &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::async_accept </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#afc2a26266df7087fb2469cdb0fa40321">Session_obj</a> *&#160;</td>
          <td class="paramname"><em>target_session</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Task_err &amp;&amp;&#160;</td>
          <td class="paramname"><em>on_done_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Acts identically to 1-arg overload of <a class="el" href="classipc_1_1session_1_1Session__server.html#a13887cd64912bb5f5675e2817ff8435f" title="Asynchronously awaits for an opposing Client_session to request session establishment and calls on_do...">Session_server::async_accept()</a>, except that the completion handler is invoked in the <code><a class="el" href="namespaceipc_1_1session_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::session.">sync_io</a></code>-pattern fashion, synchronously inside an async-wait performed by you and reported via <code>(*on_active_ev_func)()</code>. </p>
<p >Returns <code>false</code> if invoked before <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a963a189ce8663fd8a4d14857285b2420" title="All notes from Client_session_adapter::start_ops() apply equally.">start_ops()</a>.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Task_err</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">target_session</td><td>Pointer to <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#afc2a26266df7087fb2469cdb0fa40321" title="Short-hand for object type targeted by async_accept().">Session_obj</a> which shall be assigned an almost-PEER-state (open, requires <a class="el" href="classipc_1_1session_1_1sync__io_1_1Server__session__adapter.html#a592f273a045b84ed361d141ae01e6525" title="Acts identically to all overloads of Server_session_mv::init_handlers(), except that the completion h...">Server_session_adapter::init_handlers()</a> to enter PEER state) as <code>on_done_func()</code> is called. Not touched on error. Recommend default-constructing a <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#afc2a26266df7087fb2469cdb0fa40321" title="Short-hand for object type targeted by async_accept().">Session_obj</a> and passing pointer thereto here. </td></tr>
    <tr><td class="paramname">on_done_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on successful start to async-accept; <code>false</code> if called before <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a963a189ce8663fd8a4d14857285b2420" title="All notes from Client_session_adapter::start_ops() apply equally.">start_ops()</a>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00341">341</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

<p class="reference">References <a class="el" href="server__session__adapter_8hpp_source.html#l00200">ipc::session::sync_io::Server_session_adapter&lt; Session &gt;::core()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1sync__io_1_1Session__server__adapter_a2abb42ee66fa0006c675975bf4bed380_cgraph.svg" width="338" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="af1830cd789837b55cd8325cd15ffbbb1" name="af1830cd789837b55cd8325cd15ffbbb1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af1830cd789837b55cd8325cd15ffbbb1">&#9670;&nbsp;</a></span>async_accept() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<div class="memtemplate">
template&lt;typename Task_err , typename N_init_channels_by_srv_req_func , typename Mdt_load_func &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::async_accept </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#afc2a26266df7087fb2469cdb0fa40321">Session_obj</a> *&#160;</td>
          <td class="paramname"><em>target_session</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename <a class="el" href="classipc_1_1session_1_1Session__server.html#a6dea741c32a771532a884ffbc0826bb3">Session_server_obj::Channels</a> *&#160;</td>
          <td class="paramname"><em>init_channels_by_srv_req</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename <a class="el" href="classipc_1_1session_1_1Session__server.html#aa19b9057ac2d873b5989b6213a9e6f82">Session_server_obj::Mdt_reader_ptr</a> *&#160;</td>
          <td class="paramname"><em>mdt_from_cli_or_null</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename <a class="el" href="classipc_1_1session_1_1Session__server.html#a6dea741c32a771532a884ffbc0826bb3">Session_server_obj::Channels</a> *&#160;</td>
          <td class="paramname"><em>init_channels_by_cli_req</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">N_init_channels_by_srv_req_func &amp;&amp;&#160;</td>
          <td class="paramname"><em>n_init_channels_by_srv_req_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Mdt_load_func &amp;&amp;&#160;</td>
          <td class="paramname"><em>mdt_load_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Task_err &amp;&amp;&#160;</td>
          <td class="paramname"><em>on_done_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Acts identically to 7-arg overload of <a class="el" href="classipc_1_1session_1_1Session__server.html#a13887cd64912bb5f5675e2817ff8435f" title="Asynchronously awaits for an opposing Client_session to request session establishment and calls on_do...">Session_server::async_accept()</a>, except that the completion handler is invoked in the <code><a class="el" href="namespaceipc_1_1session_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::session.">sync_io</a></code>-pattern fashion, synchronously inside an async-wait performed by you and reported via <code>(*on_active_ev_func)()</code>. </p>
<p >Returns <code>false</code> if invoked before <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a963a189ce8663fd8a4d14857285b2420" title="All notes from Client_session_adapter::start_ops() apply equally.">start_ops()</a>.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Task_err</td><td>See above. </td></tr>
    <tr><td class="paramname">N_init_channels_by_srv_req_func</td><td>See above. </td></tr>
    <tr><td class="paramname">Mdt_load_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">target_session</td><td>See above. </td></tr>
    <tr><td class="paramname">init_channels_by_srv_req</td><td>See above. </td></tr>
    <tr><td class="paramname">mdt_from_cli_or_null</td><td>See above: null or pointer to <code>Reader</code> of metadata which shall be set for access on success. </td></tr>
    <tr><td class="paramname">init_channels_by_cli_req</td><td>See above. </td></tr>
    <tr><td class="paramname">n_init_channels_by_srv_req_func</td><td>See above. </td></tr>
    <tr><td class="paramname">mdt_load_func</td><td>See above. </td></tr>
    <tr><td class="paramname">on_done_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on successful start to async-accept; <code>false</code> if called before <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a963a189ce8663fd8a4d14857285b2420" title="All notes from Client_session_adapter::start_ops() apply equally.">start_ops()</a>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00368">368</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

<p class="reference">References <a class="el" href="server__session__adapter_8hpp_source.html#l00200">ipc::session::sync_io::Server_session_adapter&lt; Session &gt;::core()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1sync__io_1_1Session__server__adapter_af1830cd789837b55cd8325cd15ffbbb1_cgraph.svg" width="338" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a6ead7794ecb7da6d24a33364237dba63" name="a6ead7794ecb7da6d24a33364237dba63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ead7794ecb7da6d24a33364237dba63">&#9670;&nbsp;</a></span>core() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;<a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68">::Session_server_obj</a> * <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::core</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The adapted mutable <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68" title="Short-hand, for generic programming et al, for template parameter Session_server.">Session_server_obj</a>. </p>
<p >It is safe to access any API except for <code><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a6ead7794ecb7da6d24a33364237dba63" title="The adapted mutable Session_server_obj.">core()</a>-&gt;<a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a></code> (undefined behavior); use <code>this-&gt;<a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a></code> instead. Remember that <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a963a189ce8663fd8a4d14857285b2420" title="All notes from Client_session_adapter::start_ops() apply equally.">start_ops()</a> is required first.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00434">434</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="session__server__adapter_8hpp_source.html#l00459">ipc::session::sync_io::Session_server_adapter&lt; Session_server &gt;::operator&lt;&lt;()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1sync__io_1_1Session__server__adapter_a6ead7794ecb7da6d24a33364237dba63_icgraph.svg" width="328" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a8ce0abb6a36d2af066aca0a2888fd9a6" name="a8ce0abb6a36d2af066aca0a2888fd9a6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ce0abb6a36d2af066aca0a2888fd9a6">&#9670;&nbsp;</a></span>core() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;<a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68">::Session_server_obj</a> * <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::core</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The adapted immutable <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#aedc3ce49c5b2677fbd872291d8c5ec68" title="Short-hand, for generic programming et al, for template parameter Session_server.">Session_server_obj</a>. </p>
<p >Remember that <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a963a189ce8663fd8a4d14857285b2420" title="All notes from Client_session_adapter::start_ops() apply equally.">start_ops()</a> is required first.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00441">441</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<a id="a7d69a3b64da0a2b9ddb61c5bf6fa732c" name="a7d69a3b64da0a2b9ddb61c5bf6fa732c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d69a3b64da0a2b9ddb61c5bf6fa732c">&#9670;&nbsp;</a></span>get_log_component()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">const flow::log::Component &amp; <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::get_log_component</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>See <code>flow::log::Log_context</code>. </p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00453">453</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<a id="aba09db41feabbe5e2a464d3ff98261cb" name="aba09db41feabbe5e2a464d3ff98261cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba09db41feabbe5e2a464d3ff98261cb">&#9670;&nbsp;</a></span>get_logger()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">flow::log::Logger * <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::get_logger</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>See <code>flow::log::Log_context</code>. </p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00447">447</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<a id="ac6b60f65f4f3bd1eed258872aeb432f9" name="ac6b60f65f4f3bd1eed258872aeb432f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6b60f65f4f3bd1eed258872aeb432f9">&#9670;&nbsp;</a></span>replace_event_wait_handles()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<div class="memtemplate">
template&lt;typename Create_ev_wait_hndl_func &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::replace_event_wait_handles </td>
          <td>(</td>
          <td class="paramtype">const Create_ev_wait_hndl_func &amp;&#160;</td>
          <td class="paramname"><em>create_ev_wait_hndl_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>All notes from <a class="el" href="classipc_1_1session_1_1sync__io_1_1Client__session__adapter.html#aca3754403c449214d9a1598a613278a9" title="Analogous to transport::sync_io::Native_handle_sender::replace_event_wait_handles().">Client_session_adapter::replace_event_wait_handles()</a> apply equally. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Create_ev_wait_hndl_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">create_ev_wait_hndl_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00313">313</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<a id="a963a189ce8663fd8a4d14857285b2420" name="a963a189ce8663fd8a4d14857285b2420"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a963a189ce8663fd8a4d14857285b2420">&#9670;&nbsp;</a></span>start_ops()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<div class="memtemplate">
template&lt;typename Event_wait_func_t &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::start_ops </td>
          <td>(</td>
          <td class="paramtype">Event_wait_func_t &amp;&amp;&#160;</td>
          <td class="paramname"><em>ev_wait_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>All notes from <a class="el" href="classipc_1_1session_1_1sync__io_1_1Client__session__adapter.html#a9fc6bf366303936bb3bfedb92def1728" title="Sets up the sync_io-pattern interaction between *this and the user&#39;s event loop; required before *thi...">Client_session_adapter::start_ops()</a> apply equally. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Event_wait_func_t</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ev_wait_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00291">291</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="ae4cfae5481ba5b569b3c4c9af3ed1710" name="ae4cfae5481ba5b569b3c4c9af3ed1710"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae4cfae5481ba5b569b3c4c9af3ed1710">&#9670;&nbsp;</a></span>operator&lt;&lt;()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Prints string representation of the given <code><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html" title="sync_io-pattern counterpart to async-I/O-pattern session::Session_server types and all their SHM-awar...">Session_server_adapter</a></code> to the given <code>ostream</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
    <tr><td class="paramname">val</td><td>Object to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00459">459</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

<p class="reference">References <a class="el" href="session__server__adapter_8hpp_source.html#l00434">ipc::session::sync_io::Session_server_adapter&lt; Session_server &gt;::core()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1sync__io_1_1Session__server__adapter_ae4cfae5481ba5b569b3c4c9af3ed1710_cgraph.svg" width="328" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="ab58ecf6547887fcbfbc7b46f1ed9ea08" name="ab58ecf6547887fcbfbc7b46f1ed9ea08"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab58ecf6547887fcbfbc7b46f1ed9ea08">&#9670;&nbsp;</a></span>m_async_io</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a29aaeacaf20c4c6c707584482ae52ce6">Async_io_obj</a> <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::m_async_io</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This guy does all the work. In our dtor this will be destroyed (hence thread stopped) first-thing. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00257">257</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<a id="a7166adae8af99857bb966829fcc0ba99" name="a7166adae8af99857bb966829fcc0ba99"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7166adae8af99857bb966829fcc0ba99">&#9670;&nbsp;</a></span>m_ev_hndl_task_engine_unused</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">flow::util::Task_engine <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::m_ev_hndl_task_engine_unused</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Similar to the one in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__adapter.html" title="Internal-use workhorse containing common elements of Client_session_adapter and Server_session_adapte...">Session_adapter</a>. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00236">236</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<a id="a0190d535983fbf6abf8d82a915771e89" name="a0190d535983fbf6abf8d82a915771e89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0190d535983fbf6abf8d82a915771e89">&#9670;&nbsp;</a></span>m_ev_wait_func</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24">util::sync_io::Event_wait_func</a> <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::m_ev_wait_func</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Similar to the one in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__adapter.html" title="Internal-use workhorse containing common elements of Client_session_adapter and Server_session_adapte...">Session_adapter</a>. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00248">248</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<a id="a303eace5e24c56d8c17e9b0f79f4446b" name="a303eace5e24c56d8c17e9b0f79f4446b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a303eace5e24c56d8c17e9b0f79f4446b">&#9670;&nbsp;</a></span>m_ev_wait_hndl</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1util_1_1sync__io_1_1Asio__waitable__native__handle.html">util::sync_io::Asio_waitable_native_handle</a> <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::m_ev_wait_hndl</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Similar to the one in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__adapter.html" title="Internal-use workhorse containing common elements of Client_session_adapter and Server_session_adapte...">Session_adapter</a>, applied to <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a>. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00245">245</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="session__server__adapter_8hpp_source.html#l00266">ipc::session::sync_io::Session_server_adapter&lt; Session_server &gt;::Session_server_adapter()</a>.</p>

</div>
</div>
<a id="a609bbd2c3ac35737d48c644f4b85e294" name="a609bbd2c3ac35737d48c644f4b85e294"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a609bbd2c3ac35737d48c644f4b85e294">&#9670;&nbsp;</a></span>m_nb_task_engine</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">flow::util::Task_engine <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::m_nb_task_engine</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Similar to the one in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__adapter.html" title="Internal-use workhorse containing common elements of Client_session_adapter and Server_session_adapte...">Session_adapter</a>. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00233">233</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<a id="ab3bd7b5cf743f93aa7a63b2c0f599c33" name="ab3bd7b5cf743f93aa7a63b2c0f599c33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab3bd7b5cf743f93aa7a63b2c0f599c33">&#9670;&nbsp;</a></span>m_on_done_func_or_empty</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">flow::async::Task_asio_err <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::m_on_done_func_or_empty</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code>on_done_func</code> from <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a> if one is pending; otherwise <code>.empty()</code>. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00251">251</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<a id="a439be095b518a57efbbca079d6b05f59" name="a439be095b518a57efbbca079d6b05f59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a439be095b518a57efbbca079d6b05f59">&#9670;&nbsp;</a></span>m_ready_reader</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc_1_1util.html#aaf368acf8243bb25de3eef4e836c15de">util::Pipe_reader</a> <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::m_ready_reader</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Similar to the one in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__adapter.html" title="Internal-use workhorse containing common elements of Client_session_adapter and Server_session_adapte...">Session_adapter</a>, applied to <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a>. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00239">239</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="session__server__adapter_8hpp_source.html#l00266">ipc::session::sync_io::Session_server_adapter&lt; Session_server &gt;::Session_server_adapter()</a>.</p>

</div>
</div>
<a id="a19f346f8827932b4cfcfe525a7d039a0" name="a19f346f8827932b4cfcfe525a7d039a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19f346f8827932b4cfcfe525a7d039a0">&#9670;&nbsp;</a></span>m_ready_writer</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc_1_1util.html#a844d5ca9c17b672644fc8d9dbe758db0">util::Pipe_writer</a> <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::m_ready_writer</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Similar to the one in <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__adapter.html" title="Internal-use workhorse containing common elements of Client_session_adapter and Server_session_adapte...">Session_adapter</a>, applied to <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#a2abb42ee66fa0006c675975bf4bed380" title="Acts identically to 1-arg overload of Session_server::async_accept(), except that the completion hand...">async_accept()</a>. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00242">242</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="session__server__adapter_8hpp_source.html#l00266">ipc::session::sync_io::Session_server_adapter&lt; Session_server &gt;::Session_server_adapter()</a>.</p>

</div>
</div>
<a id="a57e1e2ca43f06bd1aa9658c855b1666b" name="a57e1e2ca43f06bd1aa9658c855b1666b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57e1e2ca43f06bd1aa9658c855b1666b">&#9670;&nbsp;</a></span>m_target_err_code</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html">ipc::session::sync_io::Session_server_adapter</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a> &gt;::m_target_err_code</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Result given to (or about to be given to) <a class="el" href="classipc_1_1session_1_1sync__io_1_1Session__server__adapter.html#ab3bd7b5cf743f93aa7a63b2c0f599c33" title="on_done_func from async_accept() if one is pending; otherwise .empty().">m_on_done_func_or_empty</a>. </p>

<p class="definition">Definition at line <a class="el" href="session__server__adapter_8hpp_source.html#l00254">254</a> of file <a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>session/<a class="el" href="session__fwd_8hpp_source.html">session_fwd.hpp</a></li>
<li>session/sync_io/<a class="el" href="session__server__adapter_8hpp_source.html">session_server_adapter.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 11 2025 20:02:26 for Flow-IPC by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>
